package main

import (
	"context"
	"fmt"
	_ "git.code.oa.com/trpc-go/trpc-filter/debuglog"
	_ "git.code.oa.com/trpc-go/trpc-filter/recovery"
	trpc "git.code.oa.com/trpc-go/trpc-go"
	"git.code.oa.com/trpc-go/trpc-go/log"
	pb "git.woa.com/v_anxiong/test_trpcproto/helloworld"
)

func main() {
	s := trpc.NewServer()
	// 注册当前实现到服务对象中
	pb.RegisterGreeterService(s.Service("trpc.test.helloworld.Greeter"), &greeterImpl{})
	// 启动服务，并阻塞在这里
	if err := s.Serve(); err != nil {
		log.Fatal(err)
	}
}

type greeterImpl struct {
	pb.UnimplementedGreeter
}

// SayHello 函数入口，用户逻辑写在该函数内部即可
// error 代表的是 exception，异常情况比如数据库连接错误，调用下游服务错误的时候，如果返回 error，rsp 的内容将不再被返回
// 如果业务遇到需要返回的错误码，错误信息，而且同时需要保留 HelloReply，请设计在 HelloReply 里面，并将 error 返回 nil
func (s *greeterImpl) SayHello(ctx context.Context, req *pb.HelloRequest) (*pb.HelloReply, error) {
	fmt.Println("客户端传过来的请求参数", req)
	rsp := &pb.HelloReply{}
	return rsp, nil
}

/*
测试运行状态
trpc-cli -func /trpc.test.helloworld.Greeter/SayHello -target ip://127.0.0.1:8000 -body '{"msg":"hello"}'
*/
